//
//  UITextField+ZKChain.h
//  ChainFun
//
//  Created by 洪绵卫 on 2022/1/10.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

/*
     所有函数均只有getter函数.
     zk_frame 对应的 frame属性 其余一样，去除zk_ 后边的为对应的属性名
 */
@interface UITextField (ZKChain)
/* 因为父类的Category中返回的是UIView类型，不便于链式继续调用，所以这里写同名的get方法，返回值不同 */

/// 初始化 没有设置Frame
+ (UITextField * _Nonnull (^)(void))zk_allocInit;

/// 带Frame的初始化
+ (UITextField * _Nonnull (^)(CGRect))zk_allocInitWithFrame;

/// 设置View的Frame
- (UITextField * _Nonnull (^)(CGRect))zk_frame;

/// 设置View的背景色
- (UITextField * _Nonnull (^)(UIColor * _Nonnull))zk_backgroundColor;

/// 将View添加到父视图上
- (UITextField * _Nonnull (^)(UIView * _Nonnull))zk_addToSuperView;

/// 设置View是否允许交互
- (UITextField * _Nonnull (^)(BOOL))zk_userInteractionEnabled;

/// 设置View的Tag
- (UITextField * _Nonnull (^)(NSInteger))zk_tag;

/// 设置View的Bounds
- (UITextField * _Nonnull (^)(CGRect))zk_bounds;

/// 设置View的中心点
- (UITextField * _Nonnull (^)(CGPoint))zk_center;

/// 设置View的透明度
- (UITextField * _Nonnull (^)(CGFloat))zk_alpha;

/// 设置View的隐藏状态
- (UITextField * _Nonnull (^)(BOOL))zk_hidden;

/// 设置View的TitColor
- (UITextField * _Nonnull (^)(UIColor * _Nonnull))zk_tintColor;


#pragma mark 对应UITextField 的一些属性Set   zk_text 对应的 text属性 其余一样，去除zk_ 后边的为对应的属性名

/// 设置代理
- (UITextField * _Nonnull (^)(id<UITextFieldDelegate> _Nullable))zk_delegate;

/// 设置UITextField的文字
- (UITextField * _Nonnull (^)(NSString * _Nullable))zk_text;

/// 设置字体大小
- (UITextField * _Nonnull (^)(UIFont * _Nullable))zk_font;

/// 设置字体颜色
- (UITextField * _Nonnull (^)(UIColor * _Nullable))zk_textColor;

/// 设置字体对齐方式
- (UITextField * _Nonnull (^)(NSTextAlignment))zk_textAlignment;

/// 设置Lable的NSAttributedString
- (UITextField * _Nonnull (^)(NSAttributedString * _Nullable))zk_attributedText;

/// 设置边框
- (UITextField * _Nonnull (^)(UITextBorderStyle))zk_borderStyle;

/// 设置占位符
- (UITextField * _Nonnull (^)(NSString * _Nullable))zk_placeholder;

/// 属性字符串的占位符
- (UITextField * _Nonnull (^)(NSAttributedString * _Nullable))zk_attributedPlaceholder;

/// 设置清除按钮显示时机
- (UITextField * _Nonnull (^)(UITextFieldViewMode))zk_clearButtonMode;

/// 显示在文本字段左侧(或前导)的覆盖视图。
- (UITextField * _Nonnull (^)(UIView * _Nullable))zk_leftView;

/// 控制左覆盖视图何时出现在文本字段中的模式。
- (UITextField * _Nonnull (^)(UITextFieldViewMode))zk_leftViewMode;

/// 显示在文本字段右侧(或尾部)的覆盖视图。
- (UITextField * _Nonnull (^)(UIView * _Nullable))zk_rightView;

/// 控制右覆盖视图何时出现在文本字段中的模式。
- (UITextField * _Nonnull (^)(UITextFieldViewMode))zk_rightViewMode;

/// 用于确定编辑开始时文本字段是否删除旧文本
- (UITextField * _Nonnull (^)(BOOL))zk_clearsOnBeginEditing;

/// 指示是否减小字体大小以使文本字符串适合文本字段的边框
- (UITextField * _Nonnull (^)(BOOL))zk_adjustsFontSizeToFitWidth;

/// 绘制文本字段的文本时允许的最小字体的大小
- (UITextField * _Nonnull (^)(CGFloat))zk_minimumFontSize;

/// 表示文本字段处于启用状态时的背景外观的图像。
- (UITextField * _Nonnull (^)(UIImage * _Nullable))zk_background;

/// 表示文本字段处于禁用状态时的背景外观的图像
- (UITextField * _Nonnull (^)(UIImage * _Nullable))zk_disabledBackground;

/// 它决定用户是否可以编辑文本字段中的文本属性
- (UITextField * _Nonnull (^)(BOOL))zk_allowsEditingTextAttributes;

/// 设置inputView
- (UITextField * _Nonnull (^)(UIView * _Nullable))zk_inputView;

/// 当文本字段成为第一个响应器时要显示的自定义附件视图。
- (UITextField * _Nonnull (^)(UIView * _Nullable))zk_inputAccessoryView;

@end

NS_ASSUME_NONNULL_END
